ArangoDB-তে ইনডেক্সিং হল একটি গুরুত্বপূর্ণ ফিচার যা ডেটাবেসের কোয়েরি অপারেশনকে দ্রুততর করে। এটি নির্দিষ্ট ডেটা দ্রুত খুঁজে পেতে সাহায্য করে এবং ডেটাবেসের কার্যক্ষমতা বাড়ায়। ArangoDB-তে বিভিন্ন ধরনের ইনডেক্স ব্যবহার করা যায়, যা ডেটার ধরন এবং কোয়েরির চাহিদার উপর নির্ভর করে।
Index হল একটি ডেটা স্ট্রাকচার যা নির্দিষ্ট ফিল্ড বা ফিল্ডগুলোর উপর ভিত্তি করে দ্রুত ডেটা অ্যাক্সেস প্রদান করে।
কেন প্রয়োজন:
_key
ফিল্ডে স্বয়ংক্রিয়ভাবে তৈরি হয়।_key
ফিল্ড ব্যবহার করে ডকুমেন্ট অনুসন্ধান দ্রুত হয়।UNIQUE
এবং NON-UNIQUE
উভয় ধরনের হতে পারে।উদাহরণ:
db.collection.ensureIndex({ type: "hash", fields: ["name", "age"], unique: false });
উদাহরণ:
db.collection.ensureIndex({ type: "skiplist", fields: ["age"] });
উদাহরণ:
db.collection.ensureIndex({ type: "fulltext", fields: ["description"], minLength: 3 });
উদাহরণ:
db.collection.ensureIndex({ type: "geo", fields: ["location"] });
উদাহরণ:
db.collection.ensureIndex({ type: "persistent", fields: ["email"] });
FOR doc IN myCollection
FILTER doc.name == "John"
RETURN doc
FOR doc IN myCollection
FILTER doc.age >= 30 AND doc.age <= 50
SORT doc.age ASC
RETURN doc
FOR doc IN myCollection
SEARCH ANALYZER(FULLTEXT(doc.description, "database"), "text_en")
RETURN doc
FOR doc IN myCollection
FILTER GEO_DISTANCE(doc.location, [52.516, 13.377]) < 5000
RETURN doc
EXPLAIN
এবং PROFILE
ব্যবহার করুন।উদাহরণ:
EXPLAIN FOR doc IN myCollection FILTER doc.age == 25 RETURN doc
ArangoDB-তে ইনডেক্সিং ডেটাবেসের কার্যক্ষমতা বাড়ানোর জন্য অত্যন্ত গুরুত্বপূর্ণ। বিভিন্ন ইনডেক্স প্রকার এবং তাদের সঠিক ব্যবহার ডেটা অনুসন্ধানের সময়, রিসোর্স অপটিমাইজেশনে সহায়তা করে। সঠিক ইনডেক্স স্ট্র্যাটেজি নির্বাচন ডেটাবেস ম্যানেজমেন্টকে সহজ এবং কার্যকর করে তোলে।
Index হলো ডেটাবেসে একটি ডেটা স্ট্রাকচার যা দ্রুত ডেটা অনুসন্ধানের জন্য ব্যবহৃত হয়। এটি ডেটাবেসের নির্দিষ্ট একটি কলামে বা ক্ষেত্রের উপর ভিত্তি করে তৈরি করা হয় এবং ডেটা অ্যাক্সেসের সময়কে উল্লেখযোগ্যভাবে কমিয়ে দেয়। ArangoDB তে Index বিভিন্ন প্রকারের হতে পারে, যেমন Primary Index, Secondary Index, Geo Index, এবং Full-text Index।
Index একটি সহায়ক ডেটা স্ট্রাকচার যা ডেটাবেসে ডেটার দ্রুত অনুসন্ধান এবং র্যানডম অ্যাক্সেস সহজ করে।
_key
ফিল্ডের উপর ভিত্তি করে কাজ করে।উদাহরণ:
FOR doc IN collection
FILTER doc._key == "12345"
RETURN doc
উদাহরণ:
FOR doc IN collection
FILTER doc.age == 25
RETURN doc
উদাহরণ:
FOR doc IN collection
SEARCH ANALYZER(doc.content == "ArangoDB", "text_en")
RETURN doc
উদাহরণ:
FOR location IN collection
FILTER GEO_DISTANCE(location.coords, [latitude, longitude]) < 1000
RETURN location
ArangoDB-তে Index দ্রুত এবং কার্যকর ডেটা অ্যাক্সেস নিশ্চিত করে। এটি বড় ডেটাবেস পরিচালনা, ফিল্টারিং, এবং বিশ্লেষণের জন্য অপরিহার্য। Primary এবং Secondary Index-এর মতো সাধারণ ইনডেক্স থেকে শুরু করে Full-text এবং Geo Index-এর মতো বিশেষায়িত ইনডেক্স পর্যন্ত ArangoDB ডেটা মডেলিং এবং ডেটাবেস অপারেশনকে সহজতর করে।
Indexing হল ডেটাবেসের একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা ডেটা অনুসন্ধানের গতি বাড়ায়। ArangoDB-তে দুটি প্রাথমিক ধরনের ইনডেক্স ব্যবহৃত হয়: Primary Index এবং Secondary Index। এগুলো দ্রুত ডেটা রিট্রাইভাল এবং ডেটা অপ্টিমাইজেশনের জন্য অত্যন্ত কার্যকর।
AQL দিয়ে Primary Index ব্যবহার করে ডকুমেন্ট রিট্রাইভ করা:
FOR doc IN myCollection
FILTER doc._key == "12345"
RETURN doc
Persistent Index ব্যবহার করে Secondary Index তৈরি:
CREATE INDEX myPersistentIndex ON myCollection(name, age) TYPE persistent
Fulltext Index তৈরি:
CREATE INDEX myFulltextIndex ON myCollection(description) TYPE fulltext
FOR doc IN myCollection
FILTER doc.name == "Alice" AND doc.age > 25
RETURN doc
বৈশিষ্ট্য | Primary Index | Secondary Index |
---|---|---|
প্রতিটি Collection-এ | ডিফল্টভাবে উপস্থিত | ম্যানুয়ালি তৈরি করতে হয় |
ফিল্ডের ধরন | _key এবং _id ফিল্ডে সীমাবদ্ধ | একাধিক ফিল্ডে প্রয়োগযোগ্য |
ইউনিক মান | সবসময় ইউনিক | প্রয়োজনীয় নয় |
ব্যবহার ক্ষেত্র | ডকুমেন্ট রিট্রাইভ | ফিল্টারিং এবং সার্চ অপারেশন |
প্রসেসিং গতি | দ্রুততম (Direct Lookup) | নির্ভর করে ইনডেক্স এবং কোয়েরি-র উপর |
ArangoDB-তে Primary Index এবং Secondary Index উভয়ই ডেটার কার্যকর অনুসন্ধানের জন্য ব্যবহৃত হয়। Primary Index ডকুমেন্ট রিট্রাইভালের জন্য প্রয়োজনীয়, যেখানে Secondary Index ডেটা ফিল্টারিং এবং জটিল অনুসন্ধানের গতি বাড়ায়। সঠিকভাবে ইনডেক্স তৈরি এবং ব্যবহার করলে ডেটাবেসের পারফরম্যান্স উল্লেখযোগ্যভাবে উন্নত হয়।
ArangoDB-তে ডেটাবেসের কর্মক্ষমতা উন্নত করতে ইনডেক্সিং একটি গুরুত্বপূর্ণ ফিচার। এটি ডেটা অনুসন্ধানকে দ্রুততর করে এবং কোয়েরি অপারেশনের সময় ব্যয় হ্রাস করে। ArangoDB বিভিন্ন ধরণের ইনডেক্স সমর্থন করে, তার মধ্যে উল্লেখযোগ্য হলো Fulltext Index, Geo Index, এবং Persistent Index।
Fulltext Index ডেটা থেকে পূর্ণ-পাঠ্য অনুসন্ধানের জন্য ব্যবহৃত হয়। এটি বড় টেক্সট ডেটা থেকে নির্দিষ্ট শব্দ বা বাক্যাংশ দ্রুত খুঁজে পেতে সাহায্য করে।
১. একটি Collection-এ Fulltext Index তৈরি করুন:
db._create("articles");
db.articles.ensureIndex({ type: "fulltext", fields: ["content"], minLength: 3 });
minLength
: ৩ মানে এটি ৩ বা তার চেয়ে বড় শব্দ অনুসন্ধান করবে।
FOR doc IN FULLTEXT(articles, "content", "ArangoDB")
RETURN doc
Geo Index স্থানীয় তথ্য অনুসন্ধান এবং ভৌগোলিক ডেটা পরিচালনার জন্য ব্যবহৃত হয়। এটি দূরত্ব, নিকটতম অবস্থান, এবং বৃত্তাকার অঞ্চল অনুসন্ধান করতে ব্যবহৃত হয়।
১. একটি Collection-এ Geo Index তৈরি করুন:
db._create("locations");
db.locations.ensureIndex({ type: "geo", fields: ["latitude", "longitude"] });
Geo Index latitude এবং longitude ক্ষেত্র ব্যবহার করে কাজ করে।
নিকটতম অবস্থান খুঁজতে:
FOR loc IN NEAR(locations, 23.8103, 90.4125, 5)
RETURN loc
এখানে NEAR ফাংশন নিকটস্থ ৫টি স্থান ফেরত দেবে।
Persistent Index জটিল ডেটা স্ট্রাকচারে নির্দিষ্ট ফিল্ডে অনুসন্ধান এবং সাজানোর জন্য ব্যবহৃত হয়। এটি বড় ডেটাসেটেও দ্রুত ফলাফল প্রদান করে।
১. একটি Collection-এ Persistent Index তৈরি করুন:
db._create("products");
db.products.ensureIndex({ type: "persistent", fields: ["price", "category"] });
Persistent Index অনেক ক্ষেত্রে SQL-র B-Tree Index এর মতো কাজ করে।
দামের ভিত্তিতে পণ্য সাজানোর জন্য:
FOR product IN products
FILTER product.category == "electronics"
SORT product.price ASC
RETURN product
ইনডেক্স টাইপ | ব্যবহার ক্ষেত্র | মূল সুবিধা |
---|---|---|
Fulltext Index | টেক্সট ডেটা অনুসন্ধান। | টেক্সট থেকে নির্দিষ্ট শব্দ বা বাক্যাংশ দ্রুত খুঁজে পাওয়া। |
Geo Index | ভৌগোলিক ডেটা অনুসন্ধান। | অবস্থান ভিত্তিক অনুসন্ধানে কার্যকর। |
Persistent Index | ফিল্টার এবং সাজানোর জন্য। | জটিল কোয়েরি অপারেশনের জন্য দ্রুত ফলাফল। |
Fulltext Index, Geo Index, এবং Persistent Index ArangoDB-তে ডেটা অনুসন্ধান ও ম্যানেজমেন্টের জন্য গুরুত্বপূর্ণ। এই ইনডেক্সগুলো ডেটা অনুসন্ধানের গতি বাড়ায় এবং বড় ডেটাসেটেও কর্মক্ষমতা নিশ্চিত করে। প্রতিটি ইনডেক্স নির্দিষ্ট ব্যবহারের জন্য উপযুক্ত, এবং এগুলো কার্যকরভাবে কনফিগার করলে ডেটাবেস অপ্টিমাইজেশন সহজ হয়।
Index Performance Optimization হল ArangoDB-তে ডেটা অ্যাক্সেসের গতিকে উন্নত করার একটি গুরুত্বপূর্ণ কৌশল। ডেটাবেসে ইনডেক্স ব্যবহার করে দ্রুত ডেটা অনুসন্ধান এবং কোয়েরি পারফরম্যান্স বাড়ানো যায়। ArangoDB বিভিন্ন ধরনের ইনডেক্স সমর্থন করে, যা নির্দিষ্ট ব্যবহারের জন্য কনফিগার করা যায়।
_key
ফিল্ডে ডিফল্টভাবে থাকে।=
) এবং IN অপারেশনের জন্য দ্রুত ফলাফল দেয়।একাধিক ফিল্ডে অনুসন্ধানের জন্য Compound Index ব্যবহার করুন।
db.myCollection.ensureIndex({
type: "persistent",
fields: ["field1", "field2"]
});
Explain Plan ব্যবহার করে কোয়েরি ইনডেক্স ব্যবহার করছে কি না তা পরীক্ষা করুন।
db._explain("FOR doc IN myCollection FILTER doc.field1 == 'value' RETURN doc");
অপ্রচলিত বা খুব কম ব্যবহৃত ইনডেক্স মুছে ফেলুন।
db.myCollection.dropIndex("index_name");
Persistent Index-এর ক্ষেত্রে Unique এবং Sparse অপশন ব্যবহার করুন।
db.myCollection.ensureIndex({
type: "persistent",
fields: ["field"],
unique: true,
sparse: true
});
Geo Index:
db.myCollection.ensureIndex({
type: "geo",
fields: ["location"]
});
Full-text Index:
db.myCollection.ensureIndex({
type: "fulltext",
fields: ["description"]
});
Query Execution Plan:
db._explain("YOUR QUERY HERE");
ArangoDB-তে Index Performance Optimization একটি অপরিহার্য প্রক্রিয়া যা ডেটা অ্যাক্সেস এবং কোয়েরি পারফরম্যান্স উন্নত করে। সঠিক ইনডেক্স নির্বাচন, ইনডেক্স কনফিগারেশন, এবং কোয়েরি অপ্টিমাইজেশনের মাধ্যমে ArangoDB-এর কার্যক্ষমতা সর্বাধিক করা সম্ভব।
common.read_more